/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.business;

import br.com.dalc.ClienteDALC;
import br.com.entities.ClienteBE;
import java.util.ArrayList;

/**
 * Camada de negocio
 *
 * @author Kevlin Toshinari Ossada - 30/01/2013 - kevlin.ossada@fatec.sp.gov.br
 */
public class ClienteBO {

    private static ClienteBO instance;

    /**
     * Padrado Singleton
     *
     * @return Classe
     *
     * @author Kevlin Toshinari Ossada - 30/01/2013 -
     * kevlin.ossada@fatec.sp.gov.br
     */
    public static ClienteBO getInstance() {
        if (instance == null) {
            instance = new ClienteBO();
        }
        return instance;
    }

    /**
     * Insere client ao banco de dados
     *
     * @param oCliente Cliente a ser inserido
     * @return retorna se o procedimento ocorreu com sucesso ou não
     *
     * @author Kevlin Toshinari Ossada - 30/01/2013 -
     * kevlin.ossada@fatec.sp.gov.br
     */
    public Boolean inserirCliente(ClienteBE oCliente) {
        try {
            return ClienteDALC.getInstance().inserirCliente(oCliente);
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * Altera client ao banco de dados
     *
     * @param oCliente Cliente a ser alterado
     * @return retorna se o procedimento ocorreu com sucesso ou não
     *
     * @author Kevlin Toshinari Ossada - 31/01/2013 -
     * kevlin.ossada@fatec.sp.gov.br
     */
    public Boolean alterarCliente(ClienteBE oCliente) {
        try {
            return ClienteDALC.getInstance().alterarCliente(oCliente);
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * Deleta client ao banco de dados
     *
     * @param oCliente Cliente a ser deletado
     * @return retorna se o procedimento ocorreu com sucesso ou não
     *
     * @author Kevlin Toshinari Ossada - 31/01/2013 -
     * kevlin.ossada@fatec.sp.gov.br
     */
    public Boolean deletarCliente(ClienteBE oCliente) {
        try {
            return ClienteDALC.getInstance().deletarCliente(oCliente);
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * Pesquisa no banco o proximo id sequencial que sera gerado
     *
     * @return Proximo id
     *
     * @author Kevlin Toshinari Ossada - 30/01/2013 -
     * kevlin.ossada@fatec.sp.gov.br
     */
    public int getNextId() {
        return ClienteDALC.getInstance().getLastId() + 1;
    }

    /**
     * Busca todos os clientes no banco de dados
     *
     * @return Lista de clientes cadastrados
     *
     * @author Kevlin Toshinari Ossada - 30/01/2013 -
     * kevlin.ossada@fatec.sp.gov.br
     */
    public ArrayList<ClienteBE> listarClientes() {
        try {
            return ClienteDALC.getInstance().listarTodosClientes();
        } catch (Exception e) {
            throw e;
        }
    }
}
